
#include<stdio.h>
//
//void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)
//{
//    int end1 = m - 1;
//    int end2 = n - 1;
//    int end = m + n - 1;
//    while (end1 >= 0 && end2 >= 0)
//    {
//        if (nums1[end1] > nums2[end2])
//        {
//            nums1[end--] = nums1[end1--];
//
//        }
//        else
//        {
//            nums1[end--] = nums2[end2--];
//
//        }
//
//    }
//
//    while (end2 >= 0)
//    {
//        nums1[end--] = nums2[end2--];
//
//    }
//
//
//
//
//}
//
//int main()
//{
//    int arr1[] = { 1,2,3,0,0,0 };
//    int arr2[] = { 2,5,6 };
//    int sz1 = sizeof(arr1) / sizeof(arr1[0]);
//    int sz2 = sizeof(arr2) / sizeof(arr2[0]);
//    int num1 = 3;
//    int num2 = 3;
//    merge(arr1,sz1,num1,arr2,sz2,num2);
//
//    for (int i = 0; i < 6; i++)
//    {
//        printf("%d ", arr1[i]);
//    }
//
//    return 0;
//}



int removeDuplicates(int* nums, int numsSize)
{
    int src = 1, dest = 0;

    while (src < numsSize)
    {
        if (nums[src] != nums[dest])
        {
            dest++;
            nums[dest] = nums[src];

        }
        else
        {
            src++;
        }
    }
    return dest+1;
}


int main()
{
    int nums[] = { 0, 1, 1, 2, 2, 3, 4, 4, 4 };
    int sz = sizeof(nums) / sizeof(nums[0]);

    int k = removeDuplicates(nums,sz);

    for (int i = 0; i < k; i++) 
    {
        printf("%d ", nums[i]);
    }



    return 0;
}